home *** CD-ROM | disk | FTP | other *** search
- /* *************************************************************************** */
- /* */
- /* Name: SCSIDEFS.H */
- /* */
- /* Description: SCSI definitions ('C' Language) */
- /* */
- /* *************************************************************************** */
-
- /* *************************************************************************** */
- /* %%% TARGET STATUS VALUES %%% */
- /* *************************************************************************** */
- #define STATUS_GOOD 0x00 /* Status Good */
- #define STATUS_CHKCOND 0x02 /* Check Condition */
- #define STATUS_CONDMET 0x04 /* Condition Met */
- #define STATUS_BUSY 0x08 /* Busy */
- #define STATUS_INTERM 0x10 /* Intermediate */
- #define STATUS_INTCDMET 0x14 /* Intermediate-condition met */
- #define STATUS_RESCONF 0x18 /* Reservation conflict */
- #define STATUS_COMTERM 0x22 /* Command Terminated */
- #define STATUS_QFULL 0x28 /* Queue full */
-
- /* *************************************************************************** */
- /* %%% SCSI MISCELLANEOUS EQUATES %%% */
- /* *************************************************************************** */
- #define MAXLUN 7 /* Maximum Logical Unit Id */
- #define MAXTARG 7 /* Maximum Target Id */
- #define MAX_SCSI_LUNS 64 /* Maximum Number of SCSI LUNs */
- #define MAX_NUM_HA 8 /* Maximum Number of SCSI HA's */
-
- /* \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ */
- /* */
- /* %%% SCSI COMMAND OPCODES %%% */
- /* */
- /* /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ */
-
- /* *************************************************************************** */
- /* %%% Commands for all Device Types %%% */
- /* *************************************************************************** */
- #define SCSI_CHANGE_DEF 0x40 /* Change Definition (Optional) */
- #define SCSI_COMPARE 0x39 /* Compare (O) */
- #define SCSI_COPY 0x18 /* Copy (O) */
- #define SCSI_COP_VERIFY 0x3A /* Copy and Verify (O) */
- #define SCSI_INQUIRY 0x12 /* Inquiry (MANDATORY) */
- #define SCSI_LOG_SELECT 0x4C /* Log Select (O) */
- #define SCSI_LOG_SENSE 0x4D /* Log Sense (O) */
- #define SCSI_MODE_SEL6 0x15 /* Mode Select 6-byte (Device Specific) */
- #define SCSI_MODE_SEL10 0x55 /* Mode Select 10-byte (Device Specific) */
- #define SCSI_MODE_SEN6 0x1A /* Mode Sense 6-byte (Device Specific) */
- #define SCSI_MODE_SEN10 0x5A /* Mode Sense 10-byte (Device Specific) */
- #define SCSI_READ_BUFF 0x3C /* Read Buffer (O) */
- #define SCSI_REQ_SENSE 0x03 /* Request Sense (MANDATORY) */
- #define SCSI_SEND_DIAG 0x1D /* Send Diagnostic (O) */
- #define SCSI_RCV_DIAG 0x1C /* Receive Diagnostic Results (0) */
- #define SCSI_TST_U_RDY 0x00 /* Test Unit Ready (MANDATORY) */
- #define SCSI_WRITE_BUFF 0x3B /* Write Buffer (O) */
-
- /* *************************************************************************** */
- /* %%% Commands Unique to Direct Access Devices %%% */
- /* *************************************************************************** */
- #define SCSI_FORMAT 0x04 /* Format Unit (MANDATORY) */
- #define SCSI_LCK_UN_CAC 0x36 /* Lock Unlock Cache (O) */
- #define SCSI_PREFETCH 0x34 /* Prefetch (O) */
- #define SCSI_MED_REMOVL 0x1E /* Prevent/Allow medium Removal (O) */
- #define SCSI_READ6 0x08 /* Read 6-byte (MANDATORY) */
- #define SCSI_READ10 0x28 /* Read 10-byte (MANDATORY) */
- #define SCSI_RD_CAPAC 0x25 /* Read Capacity (MANDATORY) */
- #define SCSI_RD_DEFECT 0x37 /* Read Defect Data (O) */
- #define SCSI_READ_LONG 0x3E /* Read Long (O) */
- #define SCSI_REASS_BLK 0x07 /* Reassign Blocks (O) */
- #define SCSI_RELEASE 0x17 /* Release Unit (MANDATORY) */
- #define SCSI_REZERO 0x01 /* Rezero Unit (O) */
- #define SCSI_RESERVE 0x16 /* Reserve Unit (MANDATORY) */
- #define SCSI_SRCH_DAT_E 0x31 /* Search Data Equal (O) */
- #define SCSI_SRCH_DAT_H 0x30 /* Search Data High (O) */
- #define SCSI_SRCH_DAT_L 0x32 /* Search Data Low (O) */
- #define SCSI_SEEK6 0x0B /* Seek 6-Byte (O) */
- #define SCSI_SEEK10 0x2B /* Seek 10-Byte (O) */
- #define SCSI_SET_LIMIT 0x33 /* Set Limits (O) */
- #define SCSI_START_STP 0x1B /* Start/Stop Unit (O) */
- #define SCSI_SYNC_CACHE 0x35 /* Synchronize Cache (O) */
- #define SCSI_VERIFY 0x2F /* Verify (O) */
- #define SCSI_WRITE6 0x0A /* Write 6-Byte (MANDATORY) */
- #define SCSI_WRITE10 0x2A /* Write 10-Byte (MANDATORY) */
- #define SCSI_WRT_VERIFY 0x2E /* Write and Verify (O) */
- #define SCSI_WRITE_LONG 0x3F /* Write Long (O) */
- #define SCSI_WRITE_SAME 0x41 /* Write Same (O) */
-
- /* *************************************************************************** */
- /* %%% Commands Unique to Sequential Access Devices %%% */
- /* *************************************************************************** */
- #define SCSI_ERASE 0x19 /* Erase (MANDATORY) */
- #define SCSI_LOAD_UN 0x1B /* Load/Unload (O) */
- #define SCSI_LOCATE 0x2B /* Locate (O) */
- #define SCSI_RD_BLK_LIM 0x05 /* Read Block Limits (MANDATORY) */
- #define SCSI_READ_POS 0x34 /* Read Position (O) */
- #define SCSI_READ_REV 0x0F /* Read Reverse (O) */
- #define SCSI_REC_BF_DAT 0x14 /* Recover Buffer Data (O) */
- #define SCSI_REWIND 0x01 /* Rewind (MANDATORY) */
- #define SCSI_SPACE 0x11 /* Space (MANDATORY) */
- #define SCSI_VERIFY_T 0x13 /* Verify (Tape) (O) */
- #define SCSI_WRT_FILE 0x10 /* Write Filemarks (MANDATORY) */
- #define SCSI_PARTITION 0x0D /* DAT/QFA Partition Select */
- #define SCSI_READWRITE 0x06 /* Set Read/Write Parameters */
-
- /* *************************************************************************** */
- /* %%% Commands Unique to Printer Devices %%% */
- /* *************************************************************************** */
- #define SCSI_PRINT 0x0A /* Print (MANDATORY) */
- #define SCSI_SLEW_PNT 0x0B /* Slew and Print (O) */
- #define SCSI_STOP_PNT 0x1B /* Stop Print (O) */
- #define SCSI_SYNC_BUFF 0x10 /* Synchronize Buffer (O) */
-
- /* *************************************************************************** */
- /* %%% Commands Unique to Processor Devices %%% */
- /* *************************************************************************** */
- #define SCSI_RECEIVE 0x08 /* Receive (O) */
- #define SCSI_SEND 0x0A /* Send (O) */
-
- /* *************************************************************************** */
- /* %%% Commands Unique to Write-Once Devices %%% */
- /* *************************************************************************** */
- #define SCSI_MEDIUM_SCN 0x38 /* Medium Scan (O) */
- #define SCSI_SRCHDATE10 0x31 /* Search Data Equal 10-Byte (O) */
- #define SCSI_SRCHDATE12 0xB1 /* Search Data Equal 12-Byte (O) */
- #define SCSI_SRCHDATH10 0x30 /* Search Data High 10-Byte (O) */
- #define SCSI_SRCHDATH12 0xB0 /* Search Data High 12-Byte (O) */
- #define SCSI_SRCHDATL10 0x32 /* Search Data Low 10-Byte (O) */
- #define SCSI_SRCHDATL12 0xB2 /* Search Data Low 12-Byte (O) */
- #define SCSI_SET_LIM_10 0x33 /* Set Limits 10-Byte (O) */
- #define SCSI_SET_LIM_12 0xB3 /* Set Limits 10-Byte (O) */
- #define SCSI_VERIFY10 0x2F /* Verify 10-Byte (O) */
- #define SCSI_VERIFY12 0xAF /* Verify 12-Byte (O) */
- #define SCSI_WRITE12 0xAA /* Write 12-Byte (O) */
- #define SCSI_WRT_VER10 0x2E /* Write and Verify 10-Byte (O) */
- #define SCSI_WRT_VER12 0xAE /* Write and Verify 12-Byte (O) */
-
- /* *************************************************************************** */
- /* %%% Commands Unique to CD-ROM Devices %%% */
- /* *************************************************************************** */
- #define SCSI_PLAYAUD_10 0x45 /* Play Audio 10-Byte (O) */
- #define SCSI_PLAYAUD_12 0xA5 /* Play Audio 12-Byte 12-Byte (O) */
- #define SCSI_PLAYAUDMSF 0x47 /* Play Audio MSF (O) */
- #define SCSI_PLAYA_TKIN 0x48 /* Play Audio Track/Index (O) */
- #define SCSI_PLYTKREL10 0x49 /* Play Track Relative 10-Byte (O) */
- #define SCSI_PLYTKREL12 0xA9 /* Play Track Relative 12-Byte (O) */
- #define SCSI_READCDCAP 0x25 /* Read CD-ROM Capacity (MANDATORY) */
- #define SCSI_READHEADER 0x44 /* Read Header (O) */
- #define SCSI_SUBCHANNEL 0x42 /* Read Subchannel (O) */
- #define SCSI_READ_TOC 0x43 /* Read TOC (O) */
-
- /* *************************************************************************** */
- /* %%% Commands Unique to Scanner Devices %%% */
- /* *************************************************************************** */
- #define SCSI_GETDBSTAT 0x34 /* Get Data Buffer Status (O) */
- #define SCSI_GETWINDOW 0x25 /* Get Window (O) */
- #define SCSI_OBJECTPOS 0x31 /* Object Postion (O) */
- #define SCSI_SCAN 0x1B /* Scan (O) */
- #define SCSI_SETWINDOW 0x24 /* Set Window (MANDATORY) */
-
- /* *************************************************************************** */
- /* %%% Commands Unique to Optical Memory Devices %%% */
- /* *************************************************************************** */
- #define SCSI_UpdateBlk 0x3D /* Update Block (O) */
-
- /* *************************************************************************** */
- /* %%% Commands Unique to Medium Changer Devices %%% */
- /* *************************************************************************** */
- #define SCSI_EXCHMEDIUM 0xA6 /* Exchange Medium (O) */
- #define SCSI_INITELSTAT 0x07 /* Initialize Element Status (O) */
- #define SCSI_POSTOELEM 0x2B /* Position to Element (O) */
- #define SCSI_REQ_VE_ADD 0xB5 /* Request Volume Element Address (O) */
- #define SCSI_SENDVOLTAG 0xB6 /* Send Volume Tag (O) */
-
- /* *************************************************************************** */
- /* %%% Commands Unique to Communication Devices %%% */
- /* *************************************************************************** */
- #define SCSI_GET_MSG_6 0x08 /* Get Message 6-Byte (MANDATORY) */
- #define SCSI_GET_MSG_10 0x28 /* Get Message 10-Byte (O) */
- #define SCSI_GET_MSG_12 0xA8 /* Get Message 12-Byte (O) */
- #define SCSI_SND_MSG_6 0x0A /* Send Message 6-Byte (MANDATORY) */
- #define SCSI_SND_MSG_10 0x2A /* Send Message 10-Byte (O) */
- #define SCSI_SND_MSG_12 0xAA /* Send Message 12-Byte (O) */
-
- /* \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ */
- /* */
- /* %%% END OF SCSI COMMAND OPCODES %%% */
- /* */
- /* /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ */
-
- /* *************************************************************************** */
- /* %%% Request Sense Data Format %%% */
- /* *************************************************************************** */
- typedef struct {
-
- char ErrorCode; /* Error Code (70H or 71H) */
- char SegmentNum; /* Number of current segment descriptor */
- char SenseKey; /* Sense Key(See bit definitions too) */
- char InfoByte0; /* Information MSB */
- char InfoByte1; /* Information MID */
- char InfoByte2; /* Information MID */
- char InfoByte3; /* Information LSB */
- char AddSenLen; /* Additional Sense Length */
- char ComSpecInf0; /* Command Specific Information MSB */
- char ComSpecInf1; /* Command Specific Information MID */
- char ComSpecInf2; /* Command Specific Information MID */
- char ComSpecInf3; /* Command Specific Information LSB */
- char AddSenseCode; /* Additional Sense Code */
- char AddSenQual; /* Additional Sense Code Qualifier */
- /* char FieldRepUCode; // Field Replaceable Unit Code */
- /* char SenKeySpec15; // Sense Key Specific 15th byte */
- /* char SenKeySpec16; // Sense Key Specific 16th byte */
- /* char SenKeySpec17; // Sense Key Specific 17th byte */
- /* char AddSenseBytes; // Additional Sense Bytes */
-
- } SENSE_DATA_FMT;
-
- /* *************************************************************************** */
- /* %%% REQUEST SENSE ERROR CODE %%% */
- /* *************************************************************************** */
- #define SERROR_CURRENT 0x70 /* Current Errors */
- #define SERROR_DEFERED 0x71 /* Deferred Errors */
-
- /* *************************************************************************** */
- /* %%% REQUEST SENSE BIT DEFINITIONS %%% */
- /* *************************************************************************** */
- #define SENSE_VALID 0x80 /* Byte 0 Bit 7 */
- #define SENSE_FILEMRK 0x80 /* Byte 2 Bit 7 */
- #define SENSE_EOM 0x40 /* Byte 2 Bit 6 */
- #define SENSE_ILI 0x20 /* Byte 2 Bit 5 */
-
- /* *************************************************************************** */
- /* %%% REQUEST SENSE SENSE KEY DEFINITIONS %%% */
- /* *************************************************************************** */
- #define KEY_NOSENSE 0x00 /* No Sense */
- #define KEY_RECERROR 0x01 /* Recovered Error */
- #define KEY_NOTREADY 0x02 /* Not Ready */
- #define KEY_MEDIUMERR 0x03 /* Medium Error */
- #define KEY_HARDERROR 0x04 /* Hardware Error */
- #define KEY_ILLGLREQ 0x05 /* Illegal Request */
- #define KEY_UNITATT 0x06 /* Unit Attention */
- #define KEY_DATAPROT 0x07 /* Data Protect */
- #define KEY_BLANKCHK 0x08 /* Blank Check */
- #define KEY_VENDSPEC 0x09 /* Vendor Specific */
- #define KEY_COPYABORT 0x0A /* Copy Abort */
- #define KEY_ABORT 0x0B /* Abort */
- #define KEY_EQUAL 0x0C /* Equal (Search) */
- #define KEY_VOLOVRFLW 0x0D /* Volume Overflow */
- #define KEY_MISCOMP 0x0E /* Miscompare (Search) */
- #define KEY_RESERVED 0x0F /* Reserved */
-
- /* *************************************************************************** */
- /* %%% PERIPHERAL DEVICE TYPE DEFINITIONS %%% */
- /* *************************************************************************** */
- #define DTYPE_DASD 0x00 /* Disk Device */
- #define DTYPE_SEQD 0x01 /* Tape Device */
- #define DTYPE_PRNT 0x02 /* Printer */
- #define DTYPE_PROC 0x03 /* Processor */
- #define DTYPE_WORM 0x04 /* Write-once read-multiple */
- #define DTYPE_CROM 0x05 /* CD-ROM device */
- #define DTYPE_SCAN 0x06 /* Scanner device */
- #define DTYPE_OPTI 0x07 /* Optical memory device */
- #define DTYPE_JUKE 0x08 /* Medium Changer device */
- #define DTYPE_COMM 0x09 /* Communications device */
- #define DTYPE_RESL 0x0A /* Reserved (low) */
- #define DTYPE_RESH 0x1E /* Reserved (high) */
- #define DTYPE_UNKNOWN 0x1F /* Unknown or no device type */
-
- /* *************************************************************************** */
- /* %%% ANSI APPROVED VERSION DEFINITIONS %%% */
- /* *************************************************************************** */
- #define ANSI_MAYBE 0x0 /* Device may or may not be ANSI approved stand */
- #define ANSI_SCSI1 0x1 /* Device complies to ANSI X3.131-1986 (SCSI-1) */
- #define ANSI_SCSI2 0x2 /* Device complies to SCSI-2 */
- #define ANSI_RESLO 0x3 /* Reserved (low) */
- #define ANSI_RESHI 0x7 /* Reserved (high) */
-